//
//  SetNickNameView.swift
//  IdleFish
//
//  Created by Ben on 2021/12/26.
//

import SwiftUI

struct SetNickNameView: View {
    
    @EnvironmentObject var userDataVM: UserDataViewModel
    
    var body: some View {
        VStack(alignment: .leading) {
            // 这里添加一个右侧的按钮
            CustomNavView(title: "设置昵称") {
                userDataVM.pushSetNickNameView.toggle()
            }
            .overlay {
                
                HStack {
                    Button {
                        
                        
                        Task {
                            
                            // 修改用户昵称功能已完成，刚刚的失败是因为服务端相关逻辑没有写，直接返回了执行成功的结果导致的
                            let result = await userDataVM.updateUserNickName(user_id: userDataVM.initVM?.userInfo?.id ?? 0, nick_name: userDataVM.nickName)
                            
                            if result == true {
                                // 当编辑结束后，修改nick_name并返回
                                userDataVM.pushSetNickNameView.toggle()
                                // 把昵称同步给initVM的nickName
                                userDataVM.initVM?.initModel?.user_info?.nick_name = userDataVM.nickName
                            }
                            // 本期视频到此结束，emmm，个人信息设置页面的导航好像有些问题，up主稍后调整一下
                            // 下期视频将完成性别修改，这里会用到Picker这个控件来完后性别选择，敬请期待。
                        }
                    } label: {
                        
                        Text("保存")
                            .frame(width: 50, height: 30)
                            .font(.system(size: 12))
                            .foregroundColor(userDataVM.updateNickNameIsEnabled ? .black : Color(hex: 0xA8A7A8))
                            .background {
                                Capsule()
                                    .fill(userDataVM.updateNickNameIsEnabled  ? .yellow : Color(hex: 0xCECECD))
                            }
                        
                    }
                    // 根据属性值设置禁用状态
                    .disabled(!userDataVM.updateNickNameIsEnabled)
                }
                .frame(maxWidth: .infinity, alignment: .trailing)
                .padding(.trailing, 6)

            }
            
            HStack(alignment: .bottom) {
                
                VStack {
                    
                    TextField("请输入昵称", text: $userDataVM.nickName)
                    
                    Divider()
                        .foregroundColor(Color(hex: 0xE5E5E5))
                }
                
                Image(userDataVM.updateNickNameIsEnabled ? "postImpression" : "idlefish_key")
                    .resize(size: CGSize(width: 80, height: 60), contentModel: .fit)
            }
            .padding(.top, 50)
            
            
            Text("近期已修改过昵称哦，30天内限修改1次")
                .foregroundColor(.red)
                .font(.system(size: 12))
                .opacity(userDataVM.updateNickNameIsEnabled ? 0 : 1)
            
        }
        .frame(maxHeight: .infinity, alignment: .top)
        .padding(.horizontal, 16)
        .onAppear(perform: {
            userDataVM.nickName = userDataVM.initVM?.userInfo?.nick_name ?? ""
        })
        .navigationTitle("")
        .navigationBarHidden(true)
    }
}

struct SetNickNameView_Previews: PreviewProvider {
    static var previews: some View {
        SetNickNameView()
    }
}
